/**
 * @filename:SysMenuService 2022年1月27日
 * @project Wonder wallet Framework  V1.0
 * Copyright(c) 2020 LuZhongren Co. Ltd. 
 * All right reserved. 
 */
package com.wonder.admin.service;

import com.wonder.admin.domain.SysMenu;
import com.wonder.admin.domain.SysRole;
import com.wonder.admin.domain.vo.SysMenuVo;
import com.wonder.admin.request.SysMenuRequest;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
/**   
 * @Description:TODO(菜单管理服务层)
 * @version: V1.0
 * @author: LuZhongren
 * 
 */
public interface SysMenuService extends IService<SysMenu> {

 /**
     * 修改菜单管理信息
     * 
     * @param SysMenu信息
     * @return 结果
     */
    public int updateEx(SysMenu sysMenu);
    
    
     /**
	 * Description:菜单管理分页返回
	 * @request:检索条件
	 * @page：分页参数
	 * @return:分页记录
	 */
    public IPage<SysMenu> selectList(SysMenuRequest request, Page<SysMenu> page);


	/**
	 * 构建前端所需要树结构
	 * 
	 * @param menus 菜单列表
	 * @return 树结构列表
	 */
	List<SysMenu> buildMenuTree(List<SysMenu> menus);


	/**
	 * 构建前端用户显示所需要全部菜单树结构
	 * 
	 * @param menus 菜单列表
	 * @return 树结构列表
	 */
	List<SysMenuVo> buildBaseMenuTree(List<SysMenuVo> menus);


	/**
	 * 构建前端用户显示所需要全部菜单树结构
	 * 
	 * @param role 用户所属权限
	 * @return 树结构列表
	 */
	List<SysMenuVo> getBaseMenus(SysRole role);


	/**
	 * 遍历获取 COMPONENT 路径
	 * 
	 * @param baseMenus
	 * @return
	 */
	List<Map<String, Object>> getComponents(List<SysMenuVo> baseMenus);


	/**
	 * 获取隐藏的非菜单路由
	 * @param role
	 * @return
	 */
	List<Map<String, Object>> getHiddenComponents(SysRole role);
	
}